Electronic Program Guides (EPGs) for storing program information such as television programming information have several advantages over printed program guides. One advantage is that while printed program guides are difficult to update with last minute program changes and can thus be inaccurate, EPGs may be updated with the latest program changes with relative ease. Another advantage that EPGs have over printed guides is that printed guides tend to be bulky because of the amount of information they contain. This makes them cumbersome to use. In contrast, EPGs have powerful searching capabilities making it easy to locate a desired channel.
In more complex systems, an EPG may provide selected programming information to a videocassette recorder (VCR) to allow the VCR to record a desired channel automatically. In other systems, a television receiver may be turned on and tuned to a desired channel using selected information from the EPG. Because of these advantages EPGs are gaining in popularity. However, one difficulty in implementing an EPG arises from the sheer volume of data that needs to be stored and manipulated. As an example, it is not unusual for an EPG for a satellite television system to have 10,000 distinct events (i.e., a unique combination of show and time). More memory may be added to the EPG to hold the data, but this is an expensive solution. Further, the large volume of the EPG data also means that more processing power is needed to manipulate (search and sort) the data, which also pushes up costs. Thus, there is a need to manage EPG data in an efficient manner to conserve valuable memory and make manipulation of the EPG data more efficient.
To this end, some EPG systems partition and/or compress the EPG data. With partitioning, the EPG data is partitioned into records containing frequently changing information. For example, program event, channel, time, etc. and records containing fields that change relatively infrequently for example, program event, title, program description, etc. The two record types can then be combined through a common field, for example the event field, to provide complete program information. It will be appreciated that by using partitioning the infrequently changing information needs to be stored just once thus leading to a savings of memory space. However, if the EPG data is not only partitioned but also compressed then if too many separate items have to be decompressed, the response may become sluggish and therefore unacceptable.
What is thus needed is a more efficient method of packaging the EPG data in general, and in particular in situations where the information is not only partitioned, but then also compressed.